Computer technology continues to be improved to handle more complex functioning associated with specific applications. However, despite the continual advances in the speed and power of computers and their associated support devices, these new applications of computer technology continue to demand even greater computing power. For this reason, an ever-present need exists for improving the performance and speed of the computer hardware and the software that controls how a computer operates.
Generally, the software that controls how the computer operates, in its most basic form, is referred to as the operating system of the computer. The operating system is essentially a set of software programs that manages the various hardware and software resources of the computer and handles the computer's interaction with users. For example, it is the operating system that creates the computer's prompts and screens on the monitor to interface with a user and that runs the computer's programs for the user. Furthermore, the operating system will allow a computer to interface with its hardware resources, such as a printer or a disk drive, or will allow a user to run other higher level software applications on the computer such as Microsoft's WINDOWS program. The operating system, therefore, must be able to complete a large number of different functions to ensure that the computer, including its accessible hardware and software resources, functions properly and at a sufficient speed for the user.
Much of the software code and data that is used for a computer operating system, or for higher level applications and programs, may exist in the resident memory of the computer itself. However, for large numbers of applications and large banks of data, the internal memory capacity of the computer may not be adequate. Despite increases in the capacity of the resident computer memory, larger and more complex programs will still exceed the resident memory. Therefore, the computer must rely upon one or more associated mass storage memory devices for additional memory. Such mass storage memory devices may include hard disk drives or floppy disk drives, for example. Such mass storage memory devices are commonly referred to as direct access storage devices, or DASDs, because they are accessed directly by the computer system for obtaining the programs or software stored thereon.
With respect to certain systems and their programs, the DASDs associated with the computer may be accessed frequently. Access to a DASD is referred to as an input/output operation, or I/O operation. Therefore, systems relying heavily upon DASDs are considered to be DASD I/O intensive environments. Since the operation of the system relies upon DASD I/O operations, the efficiency and speed of the system is directly limited by the performance of the DASDs. The time required for the computer to access the various DASDs creates a bottleneck in the system and degrades system performance.
For example, a large capacity DASD unit may contain a significant amount of frequently accessed data which can only be accessed as quickly as the DASD will physically allow. The technological improvements in the memory capacity of DASDs has only increased the bottleneck. The current trend in DASD manufacturing is to double memory capacity every 12 to 18 months. However, despite increases in the size of memory, only a 10% performance increase for the system has resulted in that same 12 to 18 month period. The system performance is mechanically limited by the DASD device and the time it takes to access the device. Poor system performance is then caused by several factors.
First, data is not always balanced among the different DASD units of a system. Those DASD units containing more of the frequently accessed data are over-utilized and become the bottleneck that degrades system performance. Secondly, frequently accessed data may be spread across an entire DASD unit, causing long seek times for the DASD unit to move from one piece of frequently accessed data to another piece of frequently accessed data. Thirdly, requests for data are usually processed at the same priority, regardless of the priority of the requestor and regardless of the importance of the data. Therefore, important requests for important data waits for the access to less important data.
Placement of data across multiple DASD units to achieve optimal performance is a difficult problem. A system may leave such a task to the system user; however, that results in a very skilled labor-intensive scenario that is very costly to achieve.
It has been proposed to allocate new data to the DASD unit with the greatest percentage of available free space. Such a process is directed to making all the DASD units full at approximately the same time. This provides reasonable data management if all the DASD units have the same capacity and performance characteristics and where all the DASD units were in the original system configuration. However, such a solution does not work well when new DASD units are added to the system, where the DASD units are different sizes, or where the DASD units have different performance characteristics.
Therefore, a need exists for a way to relieve the memory bottleneck of a computer system to increase the speed of the system. More specifically, a need exists for automatically managing the data on DASDs and managing its access to increase system speed and efficiency. Such management is desirable without an increase in system costs or system maintenance costs.